package com.cuijq.ms.clone.v2;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * @Classname Demo
 * @Description TODO
 * @Date 2021/5/14 16:39
 * @Created by CuiJQ
 */
public class Demo {

  /**
   * HashMap 线程不安全，数组+链表
   */
  private HashMap<String, SearchWord> currentKeywords = new HashMap<>();

  public void refresh() {
    /**
     * 如果10万条数据
     * newKeywords 构建的成本比较高。
     * 我们需要将这 10 万条数据从数据库中读出，
     * 然后计算哈希值，构建 newKeywords。这个过程显然是比较耗时
     */
    HashMap newKeywords = new LinkedHashMap<>();
    // 从数据库中取出所有的数据，放入到newKeywords中
    List<SearchWord> toBeUpdatedSearchWords = getSearchWords();
    for (SearchWord searchWord : toBeUpdatedSearchWords) {
      newKeywords.put(searchWord.getKeyword(), searchWord);
    }
    currentKeywords = newKeywords;
  }

  private List getSearchWords() { // TODO: 从数据库中取出所有的数据
    return null;
  }
}
